# 编译器设置
CXX = g++

# 编译选项
CXXFLAGS = -std=c++11 -Wall

# GStreamer包含路径和库链接
GST_CFLAGS = $(shell pkg-config --cflags gstreamer-1.0)
GST_LIBS = $(shell pkg-config --libs gstreamer-1.0)

# OpenCV包含路径和库链接
OPENCV_CFLAGS = $(shell pkg-config --cflags opencv4)
OPENCV_LIBS = $(shell pkg-config --libs opencv4)

# 目标文件名
TARGET = my_program

# 自动找到所有的.cpp源文件
SRCS = $(wildcard *.cpp)

# 生成目标文件列表
OBJS = $(SRCS:.cpp=.o)

# 默认目标：编译可执行程序
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) $(GST_CFLAGS) $(OPENCV_CFLAGS) -o $@ $^ $(GST_LIBS) $(OPENCV_LIBS)

# 生成目标文件
%.o: %.cpp
	$(CXX) $(CXXFLAGS) $(GST_CFLAGS) $(OPENCV_CFLAGS) -c -o $@ $<


# 清除生成的文件
clean:
	rm -f $(TARGET) $(OBJS)

# 默认目标
all: $(TARGET)

# 安装目标（可选）
install: $(TARGET)
	# 安装命令（如果需要安装到系统目录）

# 卸载目标（可选）
uninstall:
	# 卸载命令（如果需要卸载已安装的文件）

